package org.jeecg.vo.charge;


import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Objects;
import java.util.List;

/**
 * @Description: 账单
 * @Author: jeecg-boot
 * @Date:   2019-08-08
 * @Version: V1.0
 */
@Data
public class ChargeBillsJump  implements Serializable {

	/**id*/
	private String id;
	/**业主ID*/
	private String customerId;
	/**租户ID*/
	private String rentId;
	/**应收账单编号*/
	private String zjHm;
	/**应收年月*/
	private String zjCny;
	/**应收金额*/
	private Double zjJe;
	/**优惠金额*/
	private BigDecimal payReduced;
	/**实收金额*/
	private BigDecimal payDue;
	/**收费项目ID*/
	private String feeitemName;
	/**收费项目ID*/
	private String feeitemId;
	private String feeitemCode;
	/**收款日期*/
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private Date zjSkrq;
	/**差额单价*/
	private Double zjCedj;
	/**结账日期*/
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private Date zjJzrq;
	/**调整日期*/
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private Date zjTzrq;
	/**退款日期*/
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private Date zjTkrq;
	/**补打日期*/
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private Date zjBdrq;
	/**付款人员ID*/
	private String payuserId;
	/**收款人员姓名*/
	private String payuserName;
	/**房屋性质属性*/
	private String roomProperty;
	/**收费方式*/
	private String payMethod;
	/**发票号码*/
	private String invoiceNo;
	/**入库单编号*/
	private String invoiceGrnno;
	/**开票日期*/
	private Date makeinvoiceDate;
	/**上次抄见数*/
	private Double lastReading;
	/**本次抄见数*/
	private Double thisReading;
	/**抄表日期*/
	private Date readingDate;
	/**电费单价*/
	private Double unitPrice;
	/**实耗数*/
	private Double elapsedNum;
	/**倍率*/
	private Double ratio;
	/**分摊金额*/
	private Double averageMoney;
	/**表具类型*/
	private String tableType;
	/**表具编号*/
	private String tableId;
	/**退款号码*/
	private String zjTkhm;
	/**退款说明*/
	private String zjTksm;
	/**收入*/
	private Double income;
	/**交易订单号*/
	private String transactionOrder;
	/**0：按月收费 , 1：单价乘以面积*/
	private String feeType;
	/**税率*/
	private Double taxRate;
	/**税额*/
	private Double taxPaid;
	/**调整账单的上一次金额*/
	private Double historicalJe;
	/**账期*/
	private String billsNum;
	/**账单说明*/
	private String billsExp;
	/**日期范围*/
	private String dateRange;
	/**账单单价*/
	private Double feePrice;
	/**项目ID*/
	private String projectId;
	/**物业公司ID*/
	private String tenantId;
	/**备注信息*/
	private String remarks;
	/*商品编码*/
	private String maintenanceCost;
	/*单位*/
	private String unit;
	//数量
	private Integer num;
	/*财务科目编号*/
	private String subjectsCode;
	/*财务科目名称*/
	private String subjectsName;
	/*业主地址*/
	private String address;
	/*账单Id集合*/
	private List<String> billsIds;
	/*对应票据ID*/
	private String invoiceId;
	/*是否日常收费*/
	private String isDay;
	/*创建者*/
	private String createBy;
	/*创建日期*/
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private Date createDate;
	/*修改者*/
	private String updateBy;
	/*修改日期*/
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private Date updateDate;

	@Override
	public boolean equals(Object o) {
		if (this == o) return true;
		if (o == null || getClass() != o.getClass()) return false;
		if (!super.equals(o)) return false;
		ChargeBillsJump that = (ChargeBillsJump) o;
		return Objects.equals(id, that.id) &&
				Objects.equals(customerId, that.customerId) &&
				Objects.equals(rentId, that.rentId) &&
				Objects.equals(zjHm, that.zjHm) &&
				Objects.equals(zjCny, that.zjCny) &&
				Objects.equals(zjJe, that.zjJe) &&
				Objects.equals(feeitemName, that.feeitemName) &&
				Objects.equals(zjSkrq, that.zjSkrq) &&
				Objects.equals(zjCedj, that.zjCedj) &&
				Objects.equals(zjJzrq, that.zjJzrq) &&
				Objects.equals(zjTzrq, that.zjTzrq) &&
				Objects.equals(zjTkrq, that.zjTkrq) &&
				Objects.equals(zjBdrq, that.zjBdrq) &&
				Objects.equals(payuserId, that.payuserId) &&
				Objects.equals(payuserName, that.payuserName) &&
				Objects.equals(roomProperty, that.roomProperty) &&
				Objects.equals(payMethod, that.payMethod) &&
				Objects.equals(invoiceNo, that.invoiceNo) &&
				Objects.equals(invoiceGrnno, that.invoiceGrnno) &&
				Objects.equals(makeinvoiceDate, that.makeinvoiceDate) &&
				Objects.equals(lastReading, that.lastReading) &&
				Objects.equals(thisReading, that.thisReading) &&
				Objects.equals(readingDate, that.readingDate) &&
				Objects.equals(unitPrice, that.unitPrice) &&
				Objects.equals(elapsedNum, that.elapsedNum) &&
				Objects.equals(ratio, that.ratio) &&
				Objects.equals(averageMoney, that.averageMoney) &&
				Objects.equals(tableType, that.tableType) &&
				Objects.equals(tableId, that.tableId) &&
				Objects.equals(zjTkhm, that.zjTkhm) &&
				Objects.equals(zjTksm, that.zjTksm) &&
				Objects.equals(income, that.income) &&
				Objects.equals(transactionOrder, that.transactionOrder) &&
				Objects.equals(feeType, that.feeType) &&
				Objects.equals(taxRate, that.taxRate) &&
				Objects.equals(taxPaid, that.taxPaid) &&
				Objects.equals(historicalJe, that.historicalJe) &&
				Objects.equals(billsNum, that.billsNum) &&
				Objects.equals(billsExp, that.billsExp) &&
				Objects.equals(dateRange, that.dateRange) &&
				Objects.equals(feePrice, that.feePrice) &&
				Objects.equals(projectId, that.projectId) &&
				Objects.equals(tenantId, that.tenantId) &&
				Objects.equals(remarks, that.remarks) &&
				Objects.equals(maintenanceCost, that.maintenanceCost) &&
				Objects.equals(unit, that.unit) &&
				Objects.equals(num, that.num) &&
				Objects.equals(subjectsCode, that.subjectsCode) &&
				Objects.equals(subjectsName, that.subjectsName);
	}

	@Override
	public int hashCode() {

		return Objects.hash(super.hashCode(), id, customerId, rentId, zjHm, zjCny, zjJe, feeitemName, feeitemCode, zjSkrq, zjCedj, zjJzrq, zjTzrq, zjTkrq, zjBdrq, payuserId, payuserName, roomProperty, payMethod, invoiceNo, invoiceGrnno, makeinvoiceDate, lastReading, thisReading, readingDate, unitPrice, elapsedNum, ratio, averageMoney, tableType, tableId, zjTkhm, zjTksm,  income, transactionOrder, feeType, taxRate, taxPaid, historicalJe, billsNum, billsExp, dateRange, feePrice, projectId, tenantId, remarks, maintenanceCost, unit, num, subjectsCode, subjectsName);
	}


}
